import axios from "axios";
import { ElMessage } from "element-plus";
//element puls 的一个提示信息  单独引用需要引入css样式

//创建一个axios的实例对象  配置一些公共配置
const instance = axios.create({
  baseURL: "http://121.89.205.189:3000",
  timeout: 10000,
});

//对请求的拦截设置  当本地存储中有token时，将token配置到请求头中
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    if (localStorage.getItem("token")) {
      config.headers.token = localStorage.getItem("token");
    }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
//对向应的拦截设置  axios的返回值是一个大对象  拦截设置可提取所需的数据
// 对响应的数据进行二次校验  符合校验规则才放行
instance.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    let data = response.data;
    if (data.code === "200") {
      return data;
    } else {
      ElMessage({
        showClose: true,
        message: data.message,
        type: "error",
      });
    }
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

export default instance;
